package com.desay.pangoo.itmt.repository;

import java.util.List;

import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import com.desay.pangoo.itmt.entity.TechOnlineReviewEntity;
import com.desay.pangoo.itmt.entity.TechOnlineReviewTMTEntity;

/**
 * @author uidq1163
 */
@Repository
public interface TechOnlineReviewTMTRepository extends JpaSpecificationExecutor<TechOnlineReviewTMTEntity>,
		PagingAndSortingRepository<TechOnlineReviewTMTEntity, Long> {
	/**
	 * 更加TMT账号查询review记录
	 * 
	 * @param tmtUser
	 * @param techOnlineReview
	 * @return
	 */
	TechOnlineReviewTMTEntity findByTmtUserAndTechOnlineReview(@Param("tmtUser") String tmtUser,
			@Param("techOnlineReview") TechOnlineReviewEntity techOnlineReview);

	/**
	 * 查询所有TMT记录
	 * 
	 * @param techOnlineReview
	 * @return
	 */
	List<TechOnlineReviewTMTEntity> findByTechOnlineReview(
			@Param("techOnlineReview") TechOnlineReviewEntity techOnlineReview);
	/**
	 * 查询所有TMT记录
	 *
	 * @param isPL
	 *
	 * @return
	 */
	List<TechOnlineReviewTMTEntity> findByTechOnlineReviewAndIsPL(
			@Param("techOnlineReview") TechOnlineReviewEntity techOnlineReview,@Param("isPL")Integer isPL);
	/**
	 * 查询所有TMT记录
	 * 
	 * @param techOnlineReview
	 *            提案申请
	 * @param judgesType
	 *            '评委类型:正式参会人员:1，旁听人员:2
	 * @return
	 */
	List<TechOnlineReviewTMTEntity> findByTechOnlineReviewAndJudgesType(
			@Param("techOnlineReview") TechOnlineReviewEntity techOnlineReview, Integer judgesType);

	/**
	 * 管理看板【TMT专家评审榜单】，当前季度&上一季度两个榜单，按人参与评审次数从高到底排序
	 * 
	 * @return
	 */
	@Query(value = "SELECT count(id) AS count, tmt_full_user, is_participate, YEAR(modify_time) AS review_year, QUARTER(modify_time) AS year_quarter,is_passed FROM tech_online_review_tmt WHERE judges_type=1 and is_participate is not null GROUP BY tmt_user, YEAR(modify_time), QUARTER(modify_time), is_participate,is_passed ORDER BY count DESC, review_year, year_quarter", nativeQuery = true)
	List<Object[]> countExpertReviewListTmtInfo();
}